// 从.ts改为.js扩展名
import axios from 'axios';

// 创建axios实例 - 使用正确的端口
const baseRequest = axios.create({
  baseURL: process.env.NUXT_PUBLIC_API_BASE_URL || 'http://localhost:6363/api',
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json',
  },
});

// 请求拦截器 - 修复SSR环境下的localStorage使用问题
baseRequest.interceptors.request.use(
  (config) => {
    // 在SSR环境中，我们需要检查是客户端还是服务端
    if (process.client) {
      const token = localStorage.getItem('token');
      if (token) {
        config.headers.Authorization = `Bearer ${token}`;
      }
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

// 响应拦截器
baseRequest.interceptors.response.use(
  (response) => {
    const res = response.data;
    if (res.code !== 200) {
      console.error('API Error:', res.msg);
      return Promise.reject(new Error(res.msg || 'Error'));
    }
    return res.data;
  },
  (error) => {
    console.error('Network Error:', error);
    return Promise.reject(error);
  }
);

// 导出封装的API方法
export const api = {
  get: (url, config) => baseRequest.get(url, config),
  post: (url, data,config) => baseRequest.post(url, data,config),
  put: (url, data,config) => baseRequest.put(url, data,config),
  delete: (url, config) => baseRequest.delete(url, config),
};

export default baseRequest;